#ifndef DBSTORAGE_REMOVE_PACKAGE_STORAGE_CMD_HPP
#define DBSTORAGE_REMOVE_PACKAGE_STORAGE_CMD_HPP

#include "DbStorage/DbStorageCmd.hpp"

namespace Model { class Package; }

namespace DbStorage
{

/// @ingroup DbStorage
/// @brief It implements the deletion of an existing package from the database.
///
/// When the package is removed, all its children are removed as well.
class RemovePackageStorageCmd: public DbStorageCmd
{
public:
	/// @brief It initializes the command.
	/// @param subject the package to be removed.
	/// @param dbConnection the database connection to be used for storage.
	RemovePackageStorageCmd( Model::Package& subject, CaseDB::Connection& dbConnection);

	/// @brief It removes the package from the database.
	virtual void execute();
};


} // namespace DbStorage

#endif // DBSTORAGE_REMOVE_PACKAGE_STORAGE_CMD_HPP
